#include "debug_uart.h"
#include "delay.h"
#include "rfid_task.h"
#include "uart_rfid.h"
#include "oled.h"
#include "si12_task.h"
#include "buzzer.h"
#include "hc05_task.h"
#include "as608_task.h"
#include "esp8266_task.h"
#include "sg90.h"



extern uint8_t debug_flag;
extern uint8_t debug_buf;


extern UART_IO_RECV uartio_buf;

//看门狗 以40k约算时间
void IWDG_Init()
{
	//取消寄存器写保护：取消后才可写预分频
	IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  
	//设置独立看门狗的预分频系数，确定时钟:
	IWDG_SetPrescaler(IWDG_Prescaler_128);//64  40k/128  1/320s
  
	//设置看门狗重装载值，确定溢出时间:
	IWDG_SetReload(4095);//，4096后重装载 约12.8s
		//应用程序喂狗:
	IWDG_ReloadCounter();
	//使能看门狗
	IWDG_Enable();
 
}



int main(void)
{
	/*    声明变量    */
  
  /*    独立看门狗    */
//	IWDG_Init();
	//中断分组
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
  /*  SG90初始化  */
  sg90_init();
  
//   as608_task_init();

	
	/*  延时函数初始化  */
	delay_init();

	/*  蜂鸣器初始化  */
	buzzer_init();  
  
  /*   蓝牙初始化   */
	hc05_uart_init();
	
	/*   oled初始化   */
	oled_init();
	

	/*  rfid任务初始化  */
	rfid_task_init();
	
	/*   SI12初始化   */
	si12_task_init();
	
  /*     AS608指纹初始化       */
  as608_task_init();
		
  	/*  esp8266调试初始化  */
  esp8266_init();//esp8266串口初始化,rst配置
  esp8266_task_init();//esp8266任务初始化

	/*  初始化成功进入while的标志  */


#if DEBUG
  UsartPrintf(USART_DEBUG, "demo\r\n");
  uint8_t i;
  uint32_t buffer;
  for(i=0;i<6;i++)
  {
    buffer = flash_read_4byte(UID_KEY_BASE_ADDRESS+i*4);
    UsartPrintf(USART_DEBUG, "%08x\r\n",buffer);
  }

#endif



	while(1)
	{
    IWDG_ReloadCounter();//喂狗

		si12_task();//si12触摸按键任务
		rfid_task();//RFID任务
		hc05_task();//hc05蓝牙任务
    as608_task();//指纹模块任务
    esp8266_task();//esp8266任务
	}
  
  
}
